package com.rainbow.support.half.message.handler.producer;
import com.rainbow.support.half.message.entity.HalfMessagePayload;
import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.NonNull;

/**
 * rocketMq半事务生产者
 * 通用逻辑块统一处理类,生产者需要继承此类
 * 重写自己的业务方法,准备参数业务情况决定
 * @author rainbow
 */
@Slf4j
public abstract class AbstractProducerHandler extends BridgingProducerHandler {

    /**
     * TODO 生产者本地业务处理方法,需要具体业务方实现自己业务
     * 不同的生产者本地事务处理逻辑,具体处理自己本地事务逻辑
     *
     * @param producer 生产者参数
     * @return 返回生产者本地业务处理结果
     */
    public abstract boolean producerProcess(@NonNull HalfMessagePayload producer);

    /**
     * 本地业务逻辑处理之前,需要查询好需要处理的参数信息
     * 本地事务处理时,直接处理业务逻辑,解决大事务的问题
     *
     * @param producer 生产者参数
     */
    public void prepareParams(@NonNull HalfMessagePayload producer) {};

}
